//
// Created by Administrator on 2022/2/2.
//

#ifndef SDL_DEMO1_GRAPHICS_H
#define SDL_DEMO1_GRAPHICS_H

/**
 * pure interface
 */
class Graphics {
    //all static
    //c direct call
    virtual void drawString(const EString &str, EInt x, EInt y, const EColor &c) = 0;
    virtual void fillTriangle(EInt x0, EInt y0, EInt x1, EInt y1, EInt x2, EInt y2, const EColor &c) = 0;
    virtual void setPixel(EInt x, EInt y, /*EFloat z, */const EColor &c) = 0;
    virtual void fillBuffer(HDC hdc) = 0;
    virtual EColor getPixel(EInt x, EInt y) = 0;
    virtual EBool checkZ(EInt x, EInt y, EFloat z) = 0;
    virtual void enableSmoothingMode(EBool enable) = 0;
    virtual void drawLine(EInt x0, EInt y0, EInt x1, EInt y1, const EColor &c) = 0;
    virtual void clearBuffer(const EColor &c) = 0;
    virtual bool initGraphics(HINSTANCE hinstance) = 0;
    virtual void shutdownGraphics() = 0;
};


#endif //SDL_DEMO1_GRAPHICS_H
